﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ChampionFramework.Models;

namespace ChampionFramework.Controllers
{
    public abstract class BaseEventoController<T> : Controller where T : Evento
    {
        private ChampionContextContainer db = new ChampionContextContainer();

        public ActionResult Create(int jogoId)
        {
            this.List(jogoId);
            return View();
        }

        [HttpPost]
        public ActionResult Create(T evento)
        {
            int jogoId = Convert.ToInt32(this.Session["JogoId"]);
            Jogo jogo = db.JogoSet.Single(j => j.Id == jogoId);
            jogo.GetEtapaAtual().Evento.Add(evento);
            evento.Etapa = jogo.GetEtapaAtual();
            if (ModelState.IsValid)
            {
                db.EventoSet.AddObject(evento);
                db.SaveChanges();
                this.Session["JogoId"] = "";
                return RedirectToAction("TempoReal", "JogoGrupo", new { id = jogoId });
            }
            this.List(jogoId);
            return View(evento);
        }

        public void List(int jogoId)
        {
            Jogo jogo = db.JogoSet.Single(j => j.Id == jogoId);
            var list = jogo.GetEscalacaoMandante().JogadorTitular.Union(
                jogo.GetEscalacaoVisitante().JogadorTitular.Union(
                    jogo.GetEscalacaoMandante().JogadorReserva.Union(
                        jogo.GetEscalacaoVisitante().JogadorReserva)));
            ViewBag.JogadorId = new SelectList(list, "Id", "Nome");
            this.Session["JogoId"] = jogo.Id;
        }
    }
}